package cn.edu.sjtu.se.dslab.actionbean;

/**
 *	分页bean <BR>
 *	@author  程书欣
 *	@update  2011/02/23
 */
import java.util.List;

@SuppressWarnings("unchecked")
public class PageBean<T> {
	
	/**
	 * 要返回的某一页的记录列表   
	 */
	private List<T> list;
	
	/**
	 * 总记录数
	 */
    private int allRow;

	/**
	 * 总页数 
	 */    
    private int totalPage;

	/**
	 * 当前页  
	 */
	private int currentPage;

	/**
	 * 每页记录数　
	 */
	private int pageSize;
	
	/**
	 * 页面开始记录数
	 */
	private int start;
	
	public int getStart() {
		return start;
	}

	public void setStart(int start) {
		this.start = start;
	}
	
	/**
	 * 页面结束记录数
	 */
	private int end;
	
	public int getEnd() {
		return end;
	}

	public void setEnd(int end) {
		this.end = end;
	}

	/**
	 * 是否为第一页  
	 */
	@SuppressWarnings("unused")
	private boolean isFirstPage;

	/**
	 * 　是否为最后一页　
	 */
	@SuppressWarnings("unused")
	private boolean isLastPage;
	
	/**
	 * 　是否有前一页 　　　   
	 */
	@SuppressWarnings("unused")
	private boolean hasPreviousPage;

	/**
	 * 是否有下一页　   
	 */
	@SuppressWarnings("unused")
	private boolean hasNextPage;

	/** 
　　 * 初始化分页信息  
　　 */  
    public void init(){   
        this.isFirstPage = isFirstPage();   
        this.isLastPage = isLastPage();   
        this.hasPreviousPage = isHasPreviousPage();
        this.hasNextPage = isHasNextPage();
    }
	
	public List getList() {
		return list;
	}

	
	public void setList(List list) {
		this.list = list;
	}

	public int getAllRow() {
		return allRow;
	}

	public void setAllRow(int allRow) {
		this.allRow = allRow;
	}

	public int getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}

	public int getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	/** 
　　 * 以下判断页的信息,只需getter方法(is方法)即可  
　　 * @return  
　　 */ 
	public boolean isFirstPage() {
		
		// 如是当前页是第1页
		return currentPage == 1;
	}

	public void setFirstPage(boolean isFirstPage) {
		this.isFirstPage = isFirstPage;
	}

	public boolean isLastPage() {
		
		//如果当前页是最后一页
		return currentPage == totalPage;
	}

	public void setLastPage(boolean isLastPage) {
		this.isLastPage = isLastPage;
	}

	public boolean isHasPreviousPage() {
		
		//只要当前页不是第1页
		return currentPage != 1;
	}

	public void setHasPreviousPage(boolean hasPreviousPage) {
		this.hasPreviousPage = hasPreviousPage;
	}

	public boolean isHasNextPage() {
		
		// 只要当前页不是最后1页
		return currentPage != totalPage; 
	}

	public void setHasNextPage(boolean hasNextPage) {
		this.hasNextPage = hasNextPage;
	}
	/**  
	 * 计算当前页,若为0或者请求的URL中没有"?page=",则用1代替  
	 * @param page 传入的参数(可能为空,即0,则返回1)  
	 * @return 当前页  
	 */  
	public static int countCurrentPage(int page){   
	    int curPage = (page==0?1:page);  
	    return curPage;
	}
	
    /**  
　　 * 计算当前页开始记录  
　　 * @param pageSize 每页记录数  
　　 * @param currentPage 当前第几页  
　　 * @return 当前页开始记录号  
　　 */  
   public static int countOffset(final int pageSize,final int currentPage){  
	   
        int offset = pageSize*(currentPage-1);   
        return offset; 
   }
    /** 
 　　 * 计算总页数,静态方法,供外部直接通过类名调用  
 　　 * @param pageSize 每页记录数  
 　　 * @param allRow 总记录数  
 　　 * @return 总页数  
 　　 */  
    public static int countTotalPage(final int pageSize,final int allRow){   
        int totalPage = allRow % pageSize == 0 ? allRow/pageSize : allRow/pageSize+1;
        
        // 返回总页数
        return totalPage;  
    }
}
